package com.mini.grpc.client;

import com.mini.grpc.common.MethodDescriptor;

/**
 * ClientInterceptor允许在RPC调用的不同阶段进行拦截和处理。
 */
public interface ClientInterceptor {
    
    /**
     * 拦截一个调用
     *
     * @param method 方法描述符
     * @param callOptions 调用选项
     * @param next 下一个通道
     * @param <ReqT> 请求类型
     * @param <RespT> 响应类型
     * @return 拦截后的客户端调用
     */
    <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(
            MethodDescriptor<ReqT, RespT> method,
            CallOptions callOptions,
            MiniGrpcChannel next);
} 